home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / midi / justplay.lha / JustPlay / src / gcmacros.i next >
Text File  |  1994-08-04  |  3KB  |  189 lines

  1.  
  2. **
  3. **    $VER: gcmacros.i (14/02/94)
  4. **
  5. **    GC Customized Macros
  6. **
  7. **     (C) Copyright 1994 The Beet Research
  8. **    All rights reserved.
  9. **
  10.  
  11.         IFND    BDGMACROS_I
  12.  
  13. BDGMACROS_I    SET    1
  14.  
  15.  
  16. ; for calling exec once (saves a6)
  17.  
  18. sys        MACRO            ; syntax: liboffset
  19.         move.l    a6,-(sp)
  20.         move.l    4.w,a6
  21.         jsr    _LVO\1(a6)
  22.         move.l    (sp)+,a6
  23.         ENDM
  24.  
  25.  
  26. ; for calling library functions
  27.  
  28. call        MACRO            ; syntax: liboffset,[libbase]
  29.         IFNC     '\2',''
  30.         move.l    a6,-(sp)
  31.         move.l    _\2Base(pc),a6
  32.         jsr    _LVO\1(a6)
  33.         move.l    (sp)+,a6
  34.         ELSE
  35.         jsr    _LVO\1(a6)
  36.         ENDC
  37.         ENDM
  38.  
  39.  
  40. ; jumps to library function
  41.  
  42. calljmp        MACRO            ; syntax: liboffset
  43.         jmp    _LVO\1(a6)
  44.         ENDM
  45.  
  46.  
  47. ; sets library base
  48.  
  49. setbase        MACRO            ; syntax: libbase
  50.         move.l    _\1Base(pc),a6
  51.         ENDM
  52.  
  53.  
  54. ; sets exec base
  55.  
  56. setexec        MACRO            ; syntax: none
  57.         move.l    4.w,a6
  58.         ENDM
  59.  
  60.  
  61. ; clears data register
  62.  
  63. cld        MACRO            ; syntax: Dx
  64.         moveq    #0,\1
  65.         ENDM
  66.  
  67.  
  68. ; clears address register
  69.  
  70. cla        MACRO            ; syntax: Ax
  71.         sub.l    \1,\1
  72.         ENDM
  73.  
  74.  
  75. ; opens library with version care or not
  76.  
  77. openlib        MACRO            ; syntax: libname,[libversion]
  78.         lea    \1(pc),a1
  79.         IFNC    '\2',''
  80.         IF    \2<$7f
  81.         moveq    #\2,d0
  82.         ELSE
  83.         move.l    #\2,d0
  84.         ENDC
  85.         ELSE
  86.         moveq    #0,d0
  87.         ENDC
  88.         jsr    _LVOOpenLibrary(a6)
  89.         ENDM
  90.  
  91.  
  92. ; closes library safe (checks if it was opened)
  93.  
  94. clslib        MACRO            ; syntax: libbase
  95.         move.l    _\1Base(pc),a1
  96.         cmp.l    #0,a1
  97.         beq.s    .lno\1
  98.         jsr    _LVOCloseLibrary(a6)
  99. .lno\1
  100.         ENDM
  101.  
  102.  
  103. ; tests address register; if it's equal 0 jumps
  104.  
  105. tstabeq        MACRO            ; syntax: Ax,<label>
  106.         cmpa.l    #0,\1
  107.         beq.s    \2
  108.         ENDM
  109.  
  110.  
  111.  
  112.         IFD    LIBRARIES_REQTOOLS_I
  113.  
  114. ; allocs reqtools.library's requester
  115.  
  116. allocreq    MACRO
  117.         moveq.l    #\1,d0        ; syntax: type, place to store ptr
  118.         sub.l    a0,a0
  119.         call    rtAllocRequestA
  120.         move.l    d0,\2
  121.         ENDM
  122.  
  123. ; frees requester safe
  124.  
  125. freereq        MACRO
  126.         move.l    \1(pc),a1    ; syntax: ptr
  127.         cmp.l    #0,a1
  128.         beq.s    .rno\1
  129.         call    rtFreeRequest
  130. .rno\1
  131.         ENDM
  132.  
  133.         ENDC
  134.  
  135.         IFD    INTUITION_INTUITION_I
  136.  
  137. ; activates gadget
  138.  
  139. actgad        MACRO            ; syntax: gadget,window
  140.         move.l    \1,a0
  141.         move.l    \2(pc),a1
  142.         sub.l    a2,a2
  143.         call    ActivateGadget,Intuition
  144.         ENDM
  145.  
  146.          ENDC
  147.  
  148.  
  149.         IFD    LIBRARIES_GADTOOLS_I
  150.  
  151. ; changes gadtools.library' gadget
  152.  
  153. gadchg        MACRO            ; syntax: gad,win,taglist
  154.         move.l    \1,a0
  155.         move.l    \2(pc),a1
  156.         sub.l    a2,a2
  157.         call    GT_SetGadgetAttrsA
  158.         ENDM
  159.  
  160.         ENDC
  161.  
  162.  
  163.         IFD    LOWERUNDERSCORE_I
  164.  
  165. ngadchg        MACRO            ; syntax: gad,win,taglist,[ea]
  166.         move.l    \1,a0
  167.         move.l    \2(pc),a1
  168.         sub.l    a2,a2
  169.         IFNC    '\3',''
  170.         lea    \3(pc),a3
  171.         ELSE        
  172.         IFNC    '\4',''
  173.         move.l    \4,a3
  174.         ENDC
  175.         ENDC
  176.         jsr    LU_SetGadgetAttrsA
  177.         ENDM
  178.  
  179.         ENDC
  180.  
  181. TRUE        =     1
  182. NULL        =     0
  183. FALSE        =    0
  184. execbase     =     4
  185. _SysBase     =    4
  186.  
  187.         ENDC
  188.  
  189.